﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades;
using AccesoBD;

namespace LogicaNegocio
{
    public class GestorMedicos
    {
        public Medico obtenerDatosPersonalesXIdUSuario(long idUsuario) 
        {
            return Medicos.obtenerMedicoPorUsuario(idUsuario);
        }
        public long registrarMedico(Medico med)
        {
            Medicos medicos = new Medicos();
            return medicos.registrarMedico(med);
        }
        public List<Medico> ObtenerMedicosNombres()
        {
            return Medicos.obtenerTodosMedicosNombres();
        }
        public List<Medico> ObtenerMedicosNombres(int codEspecialidad)
        {
            return Medicos.obtenerTodosMedicosNombres(codEspecialidad);
        }
        public List<EspecialidadMedico> ObtenerEspecialidadesVigentesMedico(long legajo)
        {
            return Medicos.obtenerEspecialidadesVigentesMedico(legajo);
        }
        public List<EspecialidadMedico> ObtenerTodasEspecialidadesMedico(long legajo)
        {
            return Medicos.obtenerTodasEspecialidadesMedico(legajo);
        }
        public bool registrarEspecialidadAMedico(long legajo, long nroMat, int codEsp, DateTime fechaAlta)
        {
            return Medicos.registrarEspecialidadAMedico(legajo, nroMat, codEsp, fechaAlta);
        }
        public string obtenerNombreMedico(long legajo)
        {
            return Medicos.obtenerNombreMedico(legajo);
        }
        public bool actualizarCantHorariosEspecialidadMedico(EspecialidadMedico espMedActualizada)
        {
            return Medicos.actualizarCantHorariosEspecialidadMedico(espMedActualizada);
        }
        public DateTime? obtenerFechaUltimoTurno(EspecialidadMedico espMed)
        {
            return Medicos.obtenerFechaUltimoTurno(espMed);
        }
        public bool modificarMatriculaEspecilidadMedico(EspecialidadMedico espModificada)
        {
            return Medicos.modificarMatriculaEspecialidadMedico(espModificada);
        }

        //retorna el resultado de la eliminacion, y en caso de que no se pueda por turnos otorgados, retorna la fecha del ultimo turno
        public bool eliminarEspecialidadAMedico(EspecialidadMedico espMed, DateTime fechaBaja, out DateTime? fechaUltTurno)
        {
            return Medicos.eliminarEspecialidadMedico(espMed, fechaBaja, out fechaUltTurno);
        }

        public List<Medico> obtenerMedicosTurnos()
        {
            return Medicos.obtenerMedicosPorTurnosNombres();
        }

        public List<Medico> obtenerMedicosOrdenLlegada()
        {
            return Medicos.obtenerMedicosOrdenLlegadaNombres();
        }

        //metodo Barby - usado en pago a medicos
        public List<EspecialidadMedico> obtenerMedicosDiaDeHoy()
        {
            return Medicos.obtenerMedicosDiaDeHoy();
        }
    }
}
